{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![alt text](https://github.com/callysto/callysto-sample-notebooks/blob/master/notebooks/images/Callysto_Notebook-Banner_Top_06.06.18.jpg?raw=true)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Working With Open Data Part 3 - The Lottery\n",
    "\n",
    "## Introduction\n",
    "This notebook demonstrates some more complex data manipulation skills. This time, we will be using a data set of the historical winning lottery numbers. \n",
    "\n",
    "\n",
    "\n",
    "## The Data Set\n",
    "\n",
    "We'll be using historical Lotto 649 data that is hosted on the Lotto 649 website [at this link](http://www.lotto649stats.com/recent_winning.html). Should you choose to follow that link, you'll find yourself greeted by a table that looks like the one below \n",
    "\n",
    "![winning lottery numbers](images/lotto.png)\n",
    "\n",
    "Which is fantastic, there's all the data right there. However, the question remains: how will we extract that data from the website into a format that will work well for us? Another catch, which isn't obvious from the screen shot is that this is an incomplete table. There are several more tables of earlier years available. As this is open data, we're free to go through that website (either manually or with a computer) and copy that data down ourselves. However,, that might take a lot more time than it's worth, so we should be hesitant to start our analysis from here. \n",
    "\n",
    "It turns out that someone else has already gone through the trouble of capturing the last 30 or so years worth of data and put it into a form that is easy to work with. This data is available [at this link](https://www.kaggle.com/datascienceai/lottery-dataset). Unfortunately, this is an example of \"semi-open data\". You're free to download it without restriction, but you have to register for the website to obtain access. Luckily, we've already gone through that trouble for you and we're simply loading a local copy saved separately. Below are a few lines of code that should be starting to look familiar from the previous notebook. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import our data manipulation library\n",
    "import pandas as pd \n",
    "import matplotlib.pyplot as plt\n",
    "# So any plots we want will appear in the notebook\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total number of lotteries played: 3665\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PRODUCT</th>\n",
       "      <th>DRAW NUMBER</th>\n",
       "      <th>SEQUENCE NUMBER</th>\n",
       "      <th>DRAW DATE</th>\n",
       "      <th>NUMBER DRAWN 1</th>\n",
       "      <th>NUMBER DRAWN 2</th>\n",
       "      <th>NUMBER DRAWN 3</th>\n",
       "      <th>NUMBER DRAWN 4</th>\n",
       "      <th>NUMBER DRAWN 5</th>\n",
       "      <th>NUMBER DRAWN 6</th>\n",
       "      <th>BONUS NUMBER</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>649</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6/12/1982</td>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>14</td>\n",
       "      <td>41</td>\n",
       "      <td>43</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>649</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>6/19/1982</td>\n",
       "      <td>8</td>\n",
       "      <td>33</td>\n",
       "      <td>36</td>\n",
       "      <td>37</td>\n",
       "      <td>39</td>\n",
       "      <td>41</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>649</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>6/26/1982</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>23</td>\n",
       "      <td>24</td>\n",
       "      <td>27</td>\n",
       "      <td>39</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>649</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>7/3/1982</td>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>13</td>\n",
       "      <td>20</td>\n",
       "      <td>43</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>649</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>7/10/1982</td>\n",
       "      <td>5</td>\n",
       "      <td>14</td>\n",
       "      <td>21</td>\n",
       "      <td>31</td>\n",
       "      <td>34</td>\n",
       "      <td>47</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PRODUCT  DRAW NUMBER  SEQUENCE NUMBER  DRAW DATE  NUMBER DRAWN 1  \\\n",
       "0      649            1                0  6/12/1982               3   \n",
       "1      649            2                0  6/19/1982               8   \n",
       "2      649            3                0  6/26/1982               1   \n",
       "3      649            4                0   7/3/1982               3   \n",
       "4      649            5                0  7/10/1982               5   \n",
       "\n",
       "   NUMBER DRAWN 2  NUMBER DRAWN 3  NUMBER DRAWN 4  NUMBER DRAWN 5  \\\n",
       "0              11              12              14              41   \n",
       "1              33              36              37              39   \n",
       "2               6              23              24              27   \n",
       "3               9              10              13              20   \n",
       "4              14              21              31              34   \n",
       "\n",
       "   NUMBER DRAWN 6  BONUS NUMBER  \n",
       "0              43            13  \n",
       "1              41             9  \n",
       "2              39            34  \n",
       "3              43            34  \n",
       "4              47            45  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Here we're loading the data set, here the 'pd' prefix tells us that 'read_csv' is a method\n",
    "# coming from the pandas library\n",
    "lottery = pd.read_csv(\"data/649.csv\")\n",
    "\n",
    "# This is to show us how many rows in our table we will have, 'len' stands for length\n",
    "print('Total number of lotteries played:', len(lottery))\n",
    "\n",
    "# This is to just look at the first five rows of the data set and keep the \n",
    "# notebook a little cleaner. \n",
    "lottery.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The above table is the first five rows of our table which has entries for 3665 separate lotteries. That's a lot of prizes! A natural first question to ask of this data is \"are some numbers more popular than others?\". If there is a bias for some numbers over others, we'd like to play those numbers instead! \n",
    "\n",
    "A good way to try that is by counting how many times each number appears. For example, how many 1s, 2s, 3s ... etc have been drawn throughout the life of this data set. Let's walk through the steps that we have to go through. First, let's make a new data table of just the numbers data. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>NUMBER DRAWN 1</th>\n",
       "      <th>NUMBER DRAWN 2</th>\n",
       "      <th>NUMBER DRAWN 3</th>\n",
       "      <th>NUMBER DRAWN 4</th>\n",
       "      <th>NUMBER DRAWN 5</th>\n",
       "      <th>NUMBER DRAWN 6</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>14</td>\n",
       "      <td>41</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8</td>\n",
       "      <td>33</td>\n",
       "      <td>36</td>\n",
       "      <td>37</td>\n",
       "      <td>39</td>\n",
       "      <td>41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>23</td>\n",
       "      <td>24</td>\n",
       "      <td>27</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>13</td>\n",
       "      <td>20</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>14</td>\n",
       "      <td>21</td>\n",
       "      <td>31</td>\n",
       "      <td>34</td>\n",
       "      <td>47</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   NUMBER DRAWN 1  NUMBER DRAWN 2  NUMBER DRAWN 3  NUMBER DRAWN 4  \\\n",
       "0               3              11              12              14   \n",
       "1               8              33              36              37   \n",
       "2               1               6              23              24   \n",
       "3               3               9              10              13   \n",
       "4               5              14              21              31   \n",
       "\n",
       "   NUMBER DRAWN 5  NUMBER DRAWN 6  \n",
       "0              41              43  \n",
       "1              39              41  \n",
       "2              27              39  \n",
       "3              20              43  \n",
       "4              34              47  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# First we define a list of the column names (seen in the table above) that we are interested in in order\n",
    "# to count up their entries. \n",
    "cols = ['NUMBER DRAWN 1','NUMBER DRAWN 2','NUMBER DRAWN 3',\n",
    "        'NUMBER DRAWN 4','NUMBER DRAWN 5','NUMBER DRAWN 6']\n",
    "\n",
    "# By passing the list we've defined above, we return only those columns. We then assign those columns\n",
    "# to a new dataframe called 'numbers'\n",
    "numbers = lottery[cols]\n",
    "\n",
    "numbers.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we've isolated the numbers of interest, it's a simple matter of counting all the occurrences of each number. Before we can do that, we have to first introduce another piece of Python/pandas functionality: the `apply()` function. \n",
    "\n",
    "---\n",
    "### Digression: Understanding Apply()\n",
    "\n",
    "Apply is a function within python/pandas which allows you to \"apply\" another function or transformation to a large amount of data easily at once. In our case, think of it as a tool that we're using to manipulate all the data in our frame at once. Below we work through an example of how apply works by showing how we can use it to do something deceptively simple: add one to each entry of a data frame.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   0  1  2  3  4  5\n",
       "0  0  0  0  0  0  0\n",
       "1  0  0  0  0  0  0\n",
       "2  0  0  0  0  0  0\n",
       "3  0  0  0  0  0  0\n",
       "4  0  0  0  0  0  0\n",
       "5  0  0  0  0  0  0"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''\n",
    "Here we're creating a new dataframe and filling it with zeroes. \n",
    "\n",
    "The first argument is the values to fill (here just zero everywhere) \n",
    "index is a list of labels for the row indexes, here just zero through five,\n",
    "and columns is the column names, again zero through five \n",
    "'''\n",
    "\n",
    "example = pd.DataFrame(0, index=[0,1,2,3,4,5], columns=[0,1,2,3,4,5])\n",
    "example"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "11"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''\n",
    "Now we're going through defining a function, a process which we need to introduce. \n",
    "\n",
    "1. Here the 'def' keyword can be thought of to mean \"define\"\n",
    "\n",
    "2. 'add_one' is the name we've given to the function that we're defining. This choice is \n",
    "    arbitrary and we could have named it anything we wanted. However, it's often helpful \n",
    "    to name a function in a way that is meaningful to help describe the purpose of the function.\n",
    "    \n",
    "3. 'x' in parenthesis is the name we're assigning to the variable that our function will be \n",
    "   taking as input \n",
    "   \n",
    "4. output is the name that we're giving to a variable internal to our function to make calculations\n",
    "\n",
    "5. return is the keyword that tells our function to return that value once it's been called\n",
    "\n",
    "6. Notice the consistent indentation after 'def', this is how python knows that the lines of code \n",
    "   underneath def are a part of the function \n",
    "\n",
    "\n",
    "'''\n",
    "\n",
    "# This function will take a number x as input, and return that value plus one \n",
    "def add_one(x):\n",
    "    output = x + 1\n",
    "    return output\n",
    "\n",
    "# Here we're testing it for expected behavior: Does it indeed \n",
    "# return the original number plus one? \n",
    "add_one(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we've defined a \"test\" dataframe and a function which will add one to any input, we will demonstrate what the `apply()` method will do to a dataframe. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   0  1  2  3  4  5\n",
       "0  1  1  1  1  1  1\n",
       "1  1  1  1  1  1  1\n",
       "2  1  1  1  1  1  1\n",
       "3  1  1  1  1  1  1\n",
       "4  1  1  1  1  1  1\n",
       "5  1  1  1  1  1  1"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''\n",
    "Notice how we're not supplying any arguments to our add_one function, that is because \n",
    "the arguments will be supplied from the contents of the dataframe 'example' itself!\n",
    "'''\n",
    "example.apply(add_one)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice how we've added one to every entry of our dataframe in one short line of code! For our purposes, `apply()` can be thought of as a method that 'applies' a function to our data frame. The functionality of `apply()` extends much beyond this. For our purposes this should be sufficient to understand the next sections.\n",
    "\n",
    "\n",
    "---\n",
    "\n",
    "\n",
    "### Back to Business\n",
    "\n",
    "We will now demonstrate how to use `apply()` to count how many times each number has appeared within the lottery. We're going to use an internal pandas function, similar to an Excel function like `SUM`, `AVERAGE`, `MEAN` etc. In our case, we're going to use `pd.value_counts`. The `pd` prefix specifies that this is a pandas function, and `value_counts` is the name of the function we're using. What `value_counts` does is return a separate data frame object of the counts of all unique values. Let's see how to use it with apply to count the frequencies of lottery numbers below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>NUMBER DRAWN 1</th>\n",
       "      <th>NUMBER DRAWN 2</th>\n",
       "      <th>NUMBER DRAWN 3</th>\n",
       "      <th>NUMBER DRAWN 4</th>\n",
       "      <th>NUMBER DRAWN 5</th>\n",
       "      <th>NUMBER DRAWN 6</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>423.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>390.0</td>\n",
       "      <td>47.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>348.0</td>\n",
       "      <td>92.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>347.0</td>\n",
       "      <td>98.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>261.0</td>\n",
       "      <td>152.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>238.0</td>\n",
       "      <td>149.0</td>\n",
       "      <td>41.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>227.0</td>\n",
       "      <td>181.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>189.0</td>\n",
       "      <td>189.0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>194.0</td>\n",
       "      <td>178.0</td>\n",
       "      <td>68.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>152.0</td>\n",
       "      <td>183.0</td>\n",
       "      <td>75.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>142.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>89.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>127.0</td>\n",
       "      <td>194.0</td>\n",
       "      <td>103.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>100.0</td>\n",
       "      <td>178.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>72.0</td>\n",
       "      <td>172.0</td>\n",
       "      <td>114.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>68.0</td>\n",
       "      <td>178.0</td>\n",
       "      <td>132.0</td>\n",
       "      <td>47.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>69.0</td>\n",
       "      <td>159.0</td>\n",
       "      <td>141.0</td>\n",
       "      <td>61.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>53.0</td>\n",
       "      <td>162.0</td>\n",
       "      <td>154.0</td>\n",
       "      <td>58.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>52.0</td>\n",
       "      <td>127.0</td>\n",
       "      <td>149.0</td>\n",
       "      <td>79.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>41.0</td>\n",
       "      <td>129.0</td>\n",
       "      <td>163.0</td>\n",
       "      <td>81.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>42.0</td>\n",
       "      <td>133.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>108.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>28.0</td>\n",
       "      <td>125.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>97.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>17.0</td>\n",
       "      <td>96.0</td>\n",
       "      <td>177.0</td>\n",
       "      <td>109.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>26.0</td>\n",
       "      <td>82.0</td>\n",
       "      <td>168.0</td>\n",
       "      <td>132.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>13.0</td>\n",
       "      <td>84.0</td>\n",
       "      <td>161.0</td>\n",
       "      <td>118.0</td>\n",
       "      <td>63.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>6.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>158.0</td>\n",
       "      <td>135.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>11.0</td>\n",
       "      <td>67.0</td>\n",
       "      <td>134.0</td>\n",
       "      <td>160.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>12.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>10.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>126.0</td>\n",
       "      <td>173.0</td>\n",
       "      <td>94.0</td>\n",
       "      <td>18.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>6.0</td>\n",
       "      <td>43.0</td>\n",
       "      <td>115.0</td>\n",
       "      <td>159.0</td>\n",
       "      <td>86.0</td>\n",
       "      <td>20.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>4.0</td>\n",
       "      <td>49.0</td>\n",
       "      <td>127.0</td>\n",
       "      <td>148.0</td>\n",
       "      <td>88.0</td>\n",
       "      <td>28.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>4.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>100.0</td>\n",
       "      <td>160.0</td>\n",
       "      <td>115.0</td>\n",
       "      <td>23.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>2.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>99.0</td>\n",
       "      <td>200.0</td>\n",
       "      <td>140.0</td>\n",
       "      <td>37.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>1.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>93.0</td>\n",
       "      <td>163.0</td>\n",
       "      <td>128.0</td>\n",
       "      <td>39.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>1.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>84.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>143.0</td>\n",
       "      <td>54.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>NaN</td>\n",
       "      <td>11.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>171.0</td>\n",
       "      <td>186.0</td>\n",
       "      <td>46.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>NaN</td>\n",
       "      <td>11.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>130.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>76.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>59.0</td>\n",
       "      <td>144.0</td>\n",
       "      <td>166.0</td>\n",
       "      <td>85.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>122.0</td>\n",
       "      <td>190.0</td>\n",
       "      <td>87.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>119.0</td>\n",
       "      <td>211.0</td>\n",
       "      <td>106.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>106.0</td>\n",
       "      <td>185.0</td>\n",
       "      <td>125.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>106.0</td>\n",
       "      <td>203.0</td>\n",
       "      <td>156.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>78.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>157.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>59.0</td>\n",
       "      <td>184.0</td>\n",
       "      <td>199.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>192.0</td>\n",
       "      <td>233.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>267.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>160.0</td>\n",
       "      <td>307.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13.0</td>\n",
       "      <td>138.0</td>\n",
       "      <td>324.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>82.0</td>\n",
       "      <td>391.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>46.0</td>\n",
       "      <td>395.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>448.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    NUMBER DRAWN 1  NUMBER DRAWN 2  NUMBER DRAWN 3  NUMBER DRAWN 4  \\\n",
       "1            423.0             NaN             NaN             NaN   \n",
       "2            390.0            47.0             NaN             NaN   \n",
       "3            348.0            92.0             3.0             NaN   \n",
       "4            347.0            98.0             6.0             2.0   \n",
       "5            261.0           152.0            15.0             NaN   \n",
       "6            238.0           149.0            41.0             1.0   \n",
       "7            227.0           181.0            50.0             3.0   \n",
       "8            189.0           189.0            57.0            11.0   \n",
       "9            194.0           178.0            68.0            15.0   \n",
       "10           152.0           183.0            75.0            19.0   \n",
       "11           142.0           164.0            89.0            26.0   \n",
       "12           127.0           194.0           103.0            25.0   \n",
       "13           100.0           178.0           111.0            26.0   \n",
       "14            72.0           172.0           114.0            36.0   \n",
       "15            68.0           178.0           132.0            47.0   \n",
       "16            69.0           159.0           141.0            61.0   \n",
       "17            53.0           162.0           154.0            58.0   \n",
       "18            52.0           127.0           149.0            79.0   \n",
       "19            41.0           129.0           163.0            81.0   \n",
       "20            42.0           133.0           164.0           108.0   \n",
       "21            28.0           125.0           164.0            97.0   \n",
       "22            17.0            96.0           177.0           109.0   \n",
       "23            26.0            82.0           168.0           132.0   \n",
       "24            13.0            84.0           161.0           118.0   \n",
       "25             6.0            62.0           158.0           135.0   \n",
       "26            11.0            67.0           134.0           160.0   \n",
       "27            10.0            50.0           126.0           173.0   \n",
       "28             6.0            43.0           115.0           159.0   \n",
       "29             4.0            49.0           127.0           148.0   \n",
       "30             4.0            40.0           100.0           160.0   \n",
       "31             2.0            21.0            99.0           200.0   \n",
       "32             1.0            26.0            93.0           163.0   \n",
       "33             1.0            13.0            84.0           164.0   \n",
       "34             NaN            11.0            70.0           171.0   \n",
       "35             NaN            11.0            51.0           130.0   \n",
       "36             NaN             4.0            59.0           144.0   \n",
       "37             NaN             4.0            37.0           122.0   \n",
       "38             1.0             3.0            28.0           119.0   \n",
       "39             NaN             3.0            21.0           106.0   \n",
       "40             NaN             3.0            26.0           106.0   \n",
       "41             NaN             1.0            18.0            78.0   \n",
       "42             NaN             1.0             6.0            59.0   \n",
       "43             NaN             1.0             5.0            48.0   \n",
       "44             NaN             NaN             2.0            28.0   \n",
       "45             NaN             NaN             1.0            21.0   \n",
       "46             NaN             NaN             NaN            13.0   \n",
       "47             NaN             NaN             NaN             4.0   \n",
       "48             NaN             NaN             NaN             NaN   \n",
       "49             NaN             NaN             NaN             NaN   \n",
       "\n",
       "    NUMBER DRAWN 5  NUMBER DRAWN 6  \n",
       "1              NaN             NaN  \n",
       "2              NaN             NaN  \n",
       "3              NaN             NaN  \n",
       "4              NaN             NaN  \n",
       "5              NaN             NaN  \n",
       "6              NaN             NaN  \n",
       "7              NaN             NaN  \n",
       "8              NaN             NaN  \n",
       "9              NaN             NaN  \n",
       "10             NaN             NaN  \n",
       "11             2.0             NaN  \n",
       "12             3.0             NaN  \n",
       "13             6.0             1.0  \n",
       "14             8.0             NaN  \n",
       "15             2.0             NaN  \n",
       "16             5.0             NaN  \n",
       "17            15.0             NaN  \n",
       "18            11.0             1.0  \n",
       "19            23.0             3.0  \n",
       "20            28.0             4.0  \n",
       "21            35.0             4.0  \n",
       "22            36.0             1.0  \n",
       "23            40.0             7.0  \n",
       "24            63.0             5.0  \n",
       "25            55.0             6.0  \n",
       "26            62.0            12.0  \n",
       "27            94.0            18.0  \n",
       "28            86.0            20.0  \n",
       "29            88.0            28.0  \n",
       "30           115.0            23.0  \n",
       "31           140.0            37.0  \n",
       "32           128.0            39.0  \n",
       "33           143.0            54.0  \n",
       "34           186.0            46.0  \n",
       "35           164.0            76.0  \n",
       "36           166.0            85.0  \n",
       "37           190.0            87.0  \n",
       "38           211.0           106.0  \n",
       "39           185.0           125.0  \n",
       "40           203.0           156.0  \n",
       "41           206.0           157.0  \n",
       "42           184.0           199.0  \n",
       "43           192.0           233.0  \n",
       "44           164.0           267.0  \n",
       "45           160.0           307.0  \n",
       "46           138.0           324.0  \n",
       "47            82.0           391.0  \n",
       "48            46.0           395.0  \n",
       "49             NaN           448.0  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"\"\"\n",
    "Here the function we're passing to \"apply\" is pd.value_counts. This is a pandas function\n",
    "that counts the occurences of unique entries, in this case in the data frame. This is the perfect function\n",
    "to count how many times each number has been drawn in the lottery!\n",
    "\"\"\"\n",
    "\n",
    "numbers.apply(pd.value_counts)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Where in the table above we can see how many times each number has been counted, and in which position!  This may also represent a good example of where perfectly good data may appear to be misleading. Why are seeing a lot of those `NaN` values appearing again? Well - the answer is quite simple. As these values are sorted in ascending order in each row, we're seeing that certain numbers haven't, or can't, appear in certain positions. For example, due to the sortation, the number 1-5 can _never_ be present in the 6$^{\\text{th}}$ column. \n",
    "\n",
    "A table of data is fantastic, but it's much easier to communicate something like frequency counts as a histogram, or bar chart. However, we first have to add up the number of times each number was counted! In Excel, such a thing would be quite straight forward; simply type `SUM`, drag a selection of rows, then drag that cell down the side. Easy! Here, we're going to see that it's just as easy, possibly even easier using pandas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>NUMBER DRAWN 1</th>\n",
       "      <th>NUMBER DRAWN 2</th>\n",
       "      <th>NUMBER DRAWN 3</th>\n",
       "      <th>NUMBER DRAWN 4</th>\n",
       "      <th>NUMBER DRAWN 5</th>\n",
       "      <th>NUMBER DRAWN 6</th>\n",
       "      <th>sum_column</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>423.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>423.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>390.0</td>\n",
       "      <td>47.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>437.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>348.0</td>\n",
       "      <td>92.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>443.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>347.0</td>\n",
       "      <td>98.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>453.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>261.0</td>\n",
       "      <td>152.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>428.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>238.0</td>\n",
       "      <td>149.0</td>\n",
       "      <td>41.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>429.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>227.0</td>\n",
       "      <td>181.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>461.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>189.0</td>\n",
       "      <td>189.0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>446.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>194.0</td>\n",
       "      <td>178.0</td>\n",
       "      <td>68.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>455.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>152.0</td>\n",
       "      <td>183.0</td>\n",
       "      <td>75.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>429.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>142.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>89.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>423.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>127.0</td>\n",
       "      <td>194.0</td>\n",
       "      <td>103.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>452.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>100.0</td>\n",
       "      <td>178.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>422.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>72.0</td>\n",
       "      <td>172.0</td>\n",
       "      <td>114.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>402.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>68.0</td>\n",
       "      <td>178.0</td>\n",
       "      <td>132.0</td>\n",
       "      <td>47.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>427.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>69.0</td>\n",
       "      <td>159.0</td>\n",
       "      <td>141.0</td>\n",
       "      <td>61.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>435.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>53.0</td>\n",
       "      <td>162.0</td>\n",
       "      <td>154.0</td>\n",
       "      <td>58.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>442.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>52.0</td>\n",
       "      <td>127.0</td>\n",
       "      <td>149.0</td>\n",
       "      <td>79.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>419.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>41.0</td>\n",
       "      <td>129.0</td>\n",
       "      <td>163.0</td>\n",
       "      <td>81.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>440.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>42.0</td>\n",
       "      <td>133.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>108.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>479.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>28.0</td>\n",
       "      <td>125.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>97.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>453.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>17.0</td>\n",
       "      <td>96.0</td>\n",
       "      <td>177.0</td>\n",
       "      <td>109.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>436.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>26.0</td>\n",
       "      <td>82.0</td>\n",
       "      <td>168.0</td>\n",
       "      <td>132.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>455.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>13.0</td>\n",
       "      <td>84.0</td>\n",
       "      <td>161.0</td>\n",
       "      <td>118.0</td>\n",
       "      <td>63.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>444.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>6.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>158.0</td>\n",
       "      <td>135.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>422.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>11.0</td>\n",
       "      <td>67.0</td>\n",
       "      <td>134.0</td>\n",
       "      <td>160.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>446.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>10.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>126.0</td>\n",
       "      <td>173.0</td>\n",
       "      <td>94.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>471.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>6.0</td>\n",
       "      <td>43.0</td>\n",
       "      <td>115.0</td>\n",
       "      <td>159.0</td>\n",
       "      <td>86.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>429.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>4.0</td>\n",
       "      <td>49.0</td>\n",
       "      <td>127.0</td>\n",
       "      <td>148.0</td>\n",
       "      <td>88.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>444.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>4.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>100.0</td>\n",
       "      <td>160.0</td>\n",
       "      <td>115.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>442.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>2.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>99.0</td>\n",
       "      <td>200.0</td>\n",
       "      <td>140.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>499.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>1.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>93.0</td>\n",
       "      <td>163.0</td>\n",
       "      <td>128.0</td>\n",
       "      <td>39.0</td>\n",
       "      <td>450.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>1.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>84.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>143.0</td>\n",
       "      <td>54.0</td>\n",
       "      <td>459.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>NaN</td>\n",
       "      <td>11.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>171.0</td>\n",
       "      <td>186.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>484.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>NaN</td>\n",
       "      <td>11.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>130.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>76.0</td>\n",
       "      <td>432.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>59.0</td>\n",
       "      <td>144.0</td>\n",
       "      <td>166.0</td>\n",
       "      <td>85.0</td>\n",
       "      <td>458.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>122.0</td>\n",
       "      <td>190.0</td>\n",
       "      <td>87.0</td>\n",
       "      <td>440.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>119.0</td>\n",
       "      <td>211.0</td>\n",
       "      <td>106.0</td>\n",
       "      <td>468.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>106.0</td>\n",
       "      <td>185.0</td>\n",
       "      <td>125.0</td>\n",
       "      <td>440.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>106.0</td>\n",
       "      <td>203.0</td>\n",
       "      <td>156.0</td>\n",
       "      <td>494.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>78.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>157.0</td>\n",
       "      <td>460.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>59.0</td>\n",
       "      <td>184.0</td>\n",
       "      <td>199.0</td>\n",
       "      <td>449.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>192.0</td>\n",
       "      <td>233.0</td>\n",
       "      <td>479.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>164.0</td>\n",
       "      <td>267.0</td>\n",
       "      <td>461.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>160.0</td>\n",
       "      <td>307.0</td>\n",
       "      <td>489.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13.0</td>\n",
       "      <td>138.0</td>\n",
       "      <td>324.0</td>\n",
       "      <td>475.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>82.0</td>\n",
       "      <td>391.0</td>\n",
       "      <td>477.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>46.0</td>\n",
       "      <td>395.0</td>\n",
       "      <td>441.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>448.0</td>\n",
       "      <td>448.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    NUMBER DRAWN 1  NUMBER DRAWN 2  NUMBER DRAWN 3  NUMBER DRAWN 4  \\\n",
       "1            423.0             NaN             NaN             NaN   \n",
       "2            390.0            47.0             NaN             NaN   \n",
       "3            348.0            92.0             3.0             NaN   \n",
       "4            347.0            98.0             6.0             2.0   \n",
       "5            261.0           152.0            15.0             NaN   \n",
       "6            238.0           149.0            41.0             1.0   \n",
       "7            227.0           181.0            50.0             3.0   \n",
       "8            189.0           189.0            57.0            11.0   \n",
       "9            194.0           178.0            68.0            15.0   \n",
       "10           152.0           183.0            75.0            19.0   \n",
       "11           142.0           164.0            89.0            26.0   \n",
       "12           127.0           194.0           103.0            25.0   \n",
       "13           100.0           178.0           111.0            26.0   \n",
       "14            72.0           172.0           114.0            36.0   \n",
       "15            68.0           178.0           132.0            47.0   \n",
       "16            69.0           159.0           141.0            61.0   \n",
       "17            53.0           162.0           154.0            58.0   \n",
       "18            52.0           127.0           149.0            79.0   \n",
       "19            41.0           129.0           163.0            81.0   \n",
       "20            42.0           133.0           164.0           108.0   \n",
       "21            28.0           125.0           164.0            97.0   \n",
       "22            17.0            96.0           177.0           109.0   \n",
       "23            26.0            82.0           168.0           132.0   \n",
       "24            13.0            84.0           161.0           118.0   \n",
       "25             6.0            62.0           158.0           135.0   \n",
       "26            11.0            67.0           134.0           160.0   \n",
       "27            10.0            50.0           126.0           173.0   \n",
       "28             6.0            43.0           115.0           159.0   \n",
       "29             4.0            49.0           127.0           148.0   \n",
       "30             4.0            40.0           100.0           160.0   \n",
       "31             2.0            21.0            99.0           200.0   \n",
       "32             1.0            26.0            93.0           163.0   \n",
       "33             1.0            13.0            84.0           164.0   \n",
       "34             NaN            11.0            70.0           171.0   \n",
       "35             NaN            11.0            51.0           130.0   \n",
       "36             NaN             4.0            59.0           144.0   \n",
       "37             NaN             4.0            37.0           122.0   \n",
       "38             1.0             3.0            28.0           119.0   \n",
       "39             NaN             3.0            21.0           106.0   \n",
       "40             NaN             3.0            26.0           106.0   \n",
       "41             NaN             1.0            18.0            78.0   \n",
       "42             NaN             1.0             6.0            59.0   \n",
       "43             NaN             1.0             5.0            48.0   \n",
       "44             NaN             NaN             2.0            28.0   \n",
       "45             NaN             NaN             1.0            21.0   \n",
       "46             NaN             NaN             NaN            13.0   \n",
       "47             NaN             NaN             NaN             4.0   \n",
       "48             NaN             NaN             NaN             NaN   \n",
       "49             NaN             NaN             NaN             NaN   \n",
       "\n",
       "    NUMBER DRAWN 5  NUMBER DRAWN 6  sum_column  \n",
       "1              NaN             NaN       423.0  \n",
       "2              NaN             NaN       437.0  \n",
       "3              NaN             NaN       443.0  \n",
       "4              NaN             NaN       453.0  \n",
       "5              NaN             NaN       428.0  \n",
       "6              NaN             NaN       429.0  \n",
       "7              NaN             NaN       461.0  \n",
       "8              NaN             NaN       446.0  \n",
       "9              NaN             NaN       455.0  \n",
       "10             NaN             NaN       429.0  \n",
       "11             2.0             NaN       423.0  \n",
       "12             3.0             NaN       452.0  \n",
       "13             6.0             1.0       422.0  \n",
       "14             8.0             NaN       402.0  \n",
       "15             2.0             NaN       427.0  \n",
       "16             5.0             NaN       435.0  \n",
       "17            15.0             NaN       442.0  \n",
       "18            11.0             1.0       419.0  \n",
       "19            23.0             3.0       440.0  \n",
       "20            28.0             4.0       479.0  \n",
       "21            35.0             4.0       453.0  \n",
       "22            36.0             1.0       436.0  \n",
       "23            40.0             7.0       455.0  \n",
       "24            63.0             5.0       444.0  \n",
       "25            55.0             6.0       422.0  \n",
       "26            62.0            12.0       446.0  \n",
       "27            94.0            18.0       471.0  \n",
       "28            86.0            20.0       429.0  \n",
       "29            88.0            28.0       444.0  \n",
       "30           115.0            23.0       442.0  \n",
       "31           140.0            37.0       499.0  \n",
       "32           128.0            39.0       450.0  \n",
       "33           143.0            54.0       459.0  \n",
       "34           186.0            46.0       484.0  \n",
       "35           164.0            76.0       432.0  \n",
       "36           166.0            85.0       458.0  \n",
       "37           190.0            87.0       440.0  \n",
       "38           211.0           106.0       468.0  \n",
       "39           185.0           125.0       440.0  \n",
       "40           203.0           156.0       494.0  \n",
       "41           206.0           157.0       460.0  \n",
       "42           184.0           199.0       449.0  \n",
       "43           192.0           233.0       479.0  \n",
       "44           164.0           267.0       461.0  \n",
       "45           160.0           307.0       489.0  \n",
       "46           138.0           324.0       475.0  \n",
       "47            82.0           391.0       477.0  \n",
       "48            46.0           395.0       441.0  \n",
       "49             NaN           448.0       448.0  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''\n",
    "Here we first create a new data frame 'counts' which is the dataframe we created before\n",
    "\n",
    "We then create a new  \"sum_column\" in our data frame, and filling it with the sum of each \n",
    "row in our data frame. The sum of each row is specified by the 'axis=1' argument.\n",
    "'''\n",
    "\n",
    "counts = numbers.apply(pd.value_counts)\n",
    "\n",
    "# Create a new column in our counts data frame called \"sum_column\"\n",
    "counts[\"sum_column\"] = counts.sum(axis=1)\n",
    "\n",
    "counts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The above action has added a new column that represents the sum of the data contained within each row. Notice the `NaN` entries did not count towards the numeric total in our sum column (this is easiest to see in the first or last rows). Now that we have a convenient column, let's finally visualize the amount of counts we have. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Number Frequencies of Lotto 649')"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7sAAAH8CAYAAAAQWLgLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xm8tHVdP/7XG1HSVDYJFBRcU4vc7lBzQ1BDrcS+apYVGMXPciu1xC3vzAUtJU3T3MEt98SlXAC3EhQVQUUFFQQCQQREwQX8/P64rqPDeM59zpx7zpw5F8/n43E9Zua6rnnPe665zvKaa6vWWgAAAGBItlnvBgAAAGDahF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AXgF1RVq6rXr3cfTF9Vbdt/vq9e715Woqr+oKpOrqrL+77vvt49AbAxCLsAM1JV+/b/rLeq+osl5mlV9b5Z9zbvRpbbYsNh690fa6OqbpPkTUm+m+QxSf4kyVe3MP8b+3Vihyn28GdV9bhJp03x9auqDqqq/62q71XV96vqlKp66jLPu0NV/aRfHgcuMv1aVfX0qvpKVf2oqr5TVW+vqlut3bsBmK1t17sBgKupzVX1xtba5evdyAZyUpIXLjL+87NuZCNrrV1RVddOcsV697IC905yjSSPa62dvE49/FmS3ZK8ZMJpW62qKsmRSR6R5B1J3pDkp0lulmTPLTzvGkleleSHSa67yPRtkrw3yf2SvCvJi5P8SrovFI6vqru21pb8UgFgoxB2AWbvxCSbkvx1kuetcy/rrv/HfLvW2mXLzHpOa+2Nq6h/vdbapavrbphaaz9c7x5WaLf+9rvr2sX6OTTd1uw/aq29ZYLn/XWSWyX55ySbF5n+++mC7r+11h69MLKq3pzklHTh94BV9gwwN+zGDDB7b0vy2SRPrqqdl5t5qeNnq+rgftq+I+M29+NuW1X/UlXnVtVlVXVMVf1qP8/vV9Xn+mMgz6iqQ7fw2vepquP7GudV1YurarEtRdtX1fOr6vR+l8gLquotVXWzJXq+T1U9o6q+nm7r08OWWw4rUVVnV9VHqupOVfXhqrokyedGpv9Sv+vml6vqh1V1UVUdXVW3W6TWTlX1mqq6sN919Nh+19BPVtXpI/MteQxsVf35YseZVtUOVfWCqvr6yPJ6c1XddInn37Oq/q6qvtHP/9Wq+pMllsH+VfVffd8/7J/zqqraaQX9/vbCcuuf+4XF1o+quntV/XdVfbvv55yqen9V7bPoB/OLz9+3/5y+169bn62qg8eXaZJn9KPO6ns+fdGCq7BcD/08Zye5W5Kb11V3nb/7lqZN8hpb6G+bJE9J8umFoFtV16uqWuZ5eyX5hyR/n+ScJWa7d3/7utGRrbXTkvxPkvtV1e4r6RNgntmyCzB7LclhST6c5GlJnrAGr3Fkku8neW6SXZI8MckHq+oZSV6Q5OVJXpvkkCT/XlVfbq19cqzGHZM8JN3ukEel+wf5cUl+varu21r7adIF3ST/m+Qmfc0vJblhkr9KckJVbWqtnTlW+5+TXLOv/b1s4TjMEdesqhuMjftpa218q99eSY5J8tYkb0/yy32f10ryoSR37t/PS5LsmOQvkvxvVd29tfb5kXk/3C+DI5N8ur9/TJKL0+1KuipVtWO65bV7uuX15SQ3Sre87lNVd2qtnTX2tBck+aV0n9tP+nmPqqqvtdZOGKn9V0lemuSsft5vpftcfq9/jSW3kFbVXyZ5Wd/bPya5LMlvp1s/btpae0o/323TLZtzkvxLkm+n2wJ7jyR7p1tWW3r/B6bbJffcJP+U5AdJ/jDJ6/rXeWaSK9Nt0XxIkgelW+8uSjKVLfQr7CFJHpvk8CTbJ3nSSImvLjNtktdYym3T7ar8n1W1Od0y2DHJJdVtgf3b1toPFnney5N8Lcm/JnnkErW3628X25visiSVZJ8k716mR4D51lozGAwGwwyGJPumC7pP6h9/KN1WzT1H5mlJ3jf2vJbk9YvUO7iftu/IuM39uPcmqZHxj+vHfy/JjUfG79L38JZFXrMlOXBs/Iv78Q8fG3d5ktuNzbtn/3qvX6Tnrya5zgTLri0xnDc239n9+IMXqfG36ULqfcbG79A/7yMj4/6qr/OMsXmf1I8/fWTctv24Vy/ymn/eT7v7yLiXpQsUvz42703TfUHx6kWef2KSa46Mv0m60PuGseX943S7oV5/kV62WarfJHsk+VGSoxZ53svSHd+7Z//4Cf3z77iKn4Fr9sv6u0l2Gxm/XZLj04Xcm42Mf3b/WnussP4b+/l3mGIPnxz9vMdqLTpt0tdYovb/69/L+emC/hP6cUf24z+SkZ/x/jmP6Gv/5tj6M/5z/Df9+MeMjf/lJOf10x436edrMBgM8zbYjRlg/Tw5ybXSbUWbtpe01trI40/0t0e3ka2GrbUL0gXPWy5S46uttf8cG3d4f/vg5Gcn0HlEko8nOaeqbrAwpNuSdXy6YwPHvbwtf4zuuBOS3HdseOgi852fbsvtuD9Ot9X5pLE+t023xfZeVbWwxevAdGHyiLEaL033vlal3zX1j5J8NMl5Y31cmm6r6GLL62WttZ8sPGitfSvJ6bnq5/awdCFrc2vte+MFWr8lfgkPTbcuvna0p76v96Y7SdT+/byX9LcHVtUvLfumr+o3023RfnVr7byR3n6UbuvnNum2Qq+lWfQwjde4Xn+7S5IHt9Ze1Fp7Z2vtoHRnqN4/yX0WZq7ukIgjkryitfaZZWofleSCJM+pqkOqaq9+F/R3Jdmpn+c6K3ifAHPNbswA66S19vmqekuSR1TVP7fpnm32G2OPL+pvv7nIvBdl8TO7njo+orV2blVdnO5ssEn3j/jO6QLaBUv0sljI+toS827Jd1prH1nBfF9fItjdOl2gW6rPpPtH/9x07++c1tr3Rye21n5YVd9Mcu0V9jxut3Rbku+/hT5+vMi48c8zSS5MsuvI44Xgu5qzU9+mvz1uC/MsvNab0n3B8YwkT6qqTyX5YLq9A8Z3vx63cEzylxaZtjDuZotMm6ZZ9DCN11g4U/uZrbWPjk1bOEPzvul2KU+6M5VfmWSLlyRKktbahVV133Shd/TY7ePShfGnptsrA2BDE3YB1tfT0x2X+Px0AWgSW/odfuWE47d40pstWHjeR9K9h5WadKvuJJaqvU26yxf97Raeu5qz/rYtTBv/jBaW1wfTHbe8mMWC+rQ/t6XqPCLdlvHFnJ787EzO+1XVndMd03vPdLsbb66qh7fWjp5ST1d3Z/e35y0y7dz+dsck6bfKHpQupO5SVbv00xdud6uqWyT5Vmvtx0nSWvtCkttV1S3THWN/Tmvt61X1ov45X5nquwFYB8IuwDpqrX2zql6e5PE1clblMd/Nz3ctHLXWW8BuMz6iqm6YbsvkwpbGC9KdsOn6K9zqup5OS/fP/zFju3gv5htJ9q2q645u3e13271pRgJIa+3K6s76vJLP6Nvpdle+3hosr4Wt5bfP4luCt+S0/vaClfbVuhNjnZAkVbVnui8S/jHJlsLuQl+/tsi0247Ns1Ym7WFL68pS06bxPr+Q7jjqPRaZtjBu4YuJm/S3z+2HcS/vb++Q7nP6mdadgfm05GeHJdw/3d4en1qmP4C555hdgPX37HS7DL5gielfS3LXqvrZMXT9GX2XOtPqtPxqf0bZUU/ub/8z+dlxoG9Ksk9VPWSxIlX1K2vX4kSOSncc5eMXm1hVo7sEvyfd8a9/MzbbY9Kf3XnMaUnuNnoMa38M5UGjM7XWrkjy5iS/tciyXXjeapfX29MdZ7y5qq43PnGZS9a8Nd3u089a7Djc6i6VdK3+/vgZsZPurM/fyeKBf9Rn0p3F+ZDR99nXflK6rdprvWV40h6+n34L6iKWmrbV77P/kuU/k+xeVb87NvlR/e0H+ttPpTvuenx4RT/9Bf3jxQ5jGPXX6Xb3f1Fr7fJl5gWYe7bsAqyz1tp3quqfsvSJql6a7iyzx1bVG9JtWf2LJGemOwZ0rZyS5I1V9ap0Ye7e6Xa5/li6cLTgaemuN/q2qnpbupNS/TjdccAPSHdN4YPXsM+VelG6E/ocUVX3SXeSqEvTbRXbv79/337eV6dbxs+qqpun24J5pyS/n8UDw0uTvD7dZ/SmdAHo0H7e8fB6WJLfSvLOkeX1k3SXTHpA//jPJ31zrbUzq+qJ6S6pdEpVHZUuhO6R7oRbf5zki1t47mPShaMvV9Ub++fukuQ30l3+51bpdq3dXFX3TvK+/v1t00+/RRbfqjj6OldU1WPTBfPP9OvWD5I8PN2lbp7VWpvGlt0nVdUPFxn/kdba8RP2cHySA6rqX/PzMyl/pLX2nS1Nm9L7PCzdz91b+9c4M8nvpNv6+trW2qeTpLV2TrrLHF1FVe3Q3/3U+MnmquqD6X6uv5xuC/UB6U6adXR+fiI6gA1N2AWYDy9Kd7mbG45PaK29qapulG6r4ovS7f74rHRbh+68hj19Lt3lTp6TbkvS99KFuqeOngCqtXZJVd0t3bV8H5Yu+FyRLhh9Mlc9Ac66aa39uKrun+TR6YLfP/ST/i9dUDlyZN4f9YH4n9K9n4emC7z7p7t+6fiXDEfl59cWPiLd8a3PSLd1+CqfUWvt4qq6a7otfA9NF0QXltfHsxXLq7X2r1V1Wl/78elOyPV/6Y6pPmeZ576qqk7tn/uX6a4f+510x24+LT8/oda70wX4h/e3l6fb++CQJK9bQY/v7k+O9PR0ewpsm+5kaH/WWlv2+Sv0tCXG/zDJ8RP28MJ0X0T8Qbp1p9JdU/iTW5o2jffZWjujX1eek275Xj/duvWEdJf82hoLW4MP7h9/Od3n/qrW2lLHiANsKLX8YUsAwIKq+mS6a6feYr17AQCW5phdAAAABkfYBQAAYHCEXQAAAAbHMbsAAAAMji27AAAADM7gLj10gxvcoO21117r3QYAAABr4LOf/ex3Wmu7LDff4MLuXnvtlRNPPHG92wAAAGANVNWZK5nPbswAAAAMjrALAADA4Ai7AAAADI6wCwAAwOAIuwAAAAyOsAsAAMDgCLsAAAAMjrALAADA4Ai7AAAADI6wCwAAwOAIuwAAAAyOsAsAAMDgCLsAAAAMjrALAADA4Mw87FbVGVV1SlWdVFUn9uN2qqoPV9Vp/e2O/fiqqpdU1elVdXJV3XHW/QIAALDxrNeW3Xu31m7fWtvUPz4syTGttVsmOaZ/nCT3T3LLfjg0yctn3ikAAAAbzrzsxvygJEf2949McuDI+KNa5/gkO1TVDdejQQAAADaO9Qi7LcmHquqzVXVoP27X1tq5/f3zkuza3989yVkjzz27HwcAAABL2nYdXvPurbVzqupXkny4qr4yOrG11qqqTVKwD82HJslNbnKT6XUKAADAhjTzsNtaO6e/Pb+q3p1knyTfrqobttbO7XdTPr+f/ZwkNx55+h79uPGar0zyyiTZtGnTREEZAGAtHXPszZedZ//9vj6DTgCuXma6G3NV/XJVXW/hfpL7JflikqOTHNTPdlCS9/T3j07yp/1Zme+S5JKR3Z0BAABgUbPesrtrkndX1cJrv7m19t9V9Zkkb6uqQ5KcmeRh/fwfSPKAJKcnuSzJI2fcLwAAABvQTMNua+0bSW63yPgLk+y/yPiW5NEzaA0AAIABWY8TVAEAAOvg7MM+sew8exx+jxl0AmtvXq6zCwAAAFMj7AIAADA4wi4AAACD45hdAACAKdvrsPcvO88Zhz9wBp1cfdmyCwAAwOAIuwAAAAyOsAsAAMDgOGYXAIBVcUwiMM9s2QUAAGBwhF0AAAAGR9gFAABgcByzC8BWO+bYmy87z/77fX0GnQBwdbXbcSctO8959779DDphXtiyCwAAwODYsgsAAHA1sPeRey87zykHnTKDTmbDll0AAAAGx5ZdAACAebZ5+xXMc8na97HB2LILAADA4Ai7AAAADI7dmAGAVXvZo45ddp5Hv2K/GXQCAFdlyy4AAACDI+wCAAAwOHZjBgCANWJXf1g/tuwCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIPjBFXMpbMP+8Sy8+xx+D1m0AkAAFcnex32/mXnOePwB86gE7aWsAsAAExk8+bNU50P1oKwCwBwNWPLFXB1IOwCADAIex+597LznHLQKTPoBJgHTlAFAADA4NiyCytwzLE3X9F8++/39TXuBJillezqmdjdEwDmkS27AAAADI4tuxvYqbe+zbLz3OYrp86gE4Dp2O24k5ad57x7334GnQAAG52wC1dzzsgJAMAQ2Y0ZAACAwbFlFwBgA1jJbv6JXf3ZeFZyIlAnAWU1hF0AAABm7mWPOnbZeR79iv1WXd9uzAAAAAyOLbsM2ubNm6cyD8DQOKM/AENnyy4AAACDY8vuOtj7yL2XneeUg06ZQScAzMzm7VcwzyVr38fVwNmHfWLZefY4/B4z6ASA9STsAszIC//gd5ad54lvfd8MOgFWwqEwABubsAsAAMCKbZTzPgi7AFdjtlwBLG7e/pm3dxBMzgmqAAAAGBxbdifh5CIAAAAbgrALwODsddj7l53njMMfOINOAID1IuwCLONljzp22Xke/Yr9ZtAJAAAr5ZhdAAAABseWXQAA1pfzogBrwJZdAAAABkfYBQAAYHDsxsxUueD58nY77qRl5znv3refQScA88XfEACmSdglibPNAgAAwyLsAoN16q1vs+w8t/nKqTPoBACAWXPMLgAAAIMj7AIAADA4V4vdmPc67P3LznPG4Q+cQScwPdZrAABY2tUi7AIzsHn7Fcxzydr3AQO395F7LzvPKQedMoNOAGC+2Y0ZAACAwbFlF2CDOfuwTyw7zx6H32MGnQAAzC9bdgEAABgcYRcAAIDBEXYBAAAYHGEXAACAwRF2AQAAGBxhFwAAgMERdgEAABgcYRcAAIDBEXYBAAAYHGEXAACAwRF2AQAAGJx1CbtVdY2q+nxVva9/fNOqOqGqTq+qt1bVtfrx2/WPT++n77Ue/QIAALCxrNeW3ccnOXXk8fOTHNFau0WSi5Ic0o8/JMlF/fgj+vkAAABgi7ad9QtW1R5JHpjkOUmeUFWVZL8kf9TPcmSSzUlenuRB/f0keUeSl1ZVtdbaLHsGZmfvI/de0XynHHTKGncCAMBGth5bdv8lyd8l+Wn/eOckF7fWrugfn51k9/7+7knOSpJ++iX9/AAAALCkmYbdqvqdJOe31j475bqHVtWJVXXiBRdcMM3SAAAAbECz3rJ7tyS/V1VnJPmPdLsvvzjJDlW1sEv1HknO6e+fk+TGSdJP3z7JheNFW2uvbK1taq1t2mWXXdb2HQAAADD3Zhp2W2tPaa3t0VrbK8nDkxzbWntEkuOSPKSf7aAk7+nvH90/Tj/9WMfrAgAAsJx5uc7uk9OdrOr0dMfkvqYf/5okO/fjn5DksHXqDwAAgA1k5mdjXtBa+2iSj/b3v5Fkn0Xm+WGSh860MQAAADa8edmyCwAAAFMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4Mw27VfVLVfXpqvpCVX2pqv6hH3/Tqjqhqk6vqrdW1bX68dv1j0/vp+81y34BAADYmGa9ZfdHSfZrrd0uye2THFBVd0ny/CRHtNZukeSiJIf08x+S5KJ+/BH9fAAAALBFMw27rfP9/uE1+6El2S/JO/rxRyY5sL//oP5x+un7V1XNqF0AAAA2qJkfs1tV16iqk5Kcn+TDSb6e5OLW2hX9LGcn2b2/v3uSs5Kkn35Jkp1n2zEAAAAbzczDbmvtytba7ZPskWSfJLfe2ppVdWhVnVhVJ15wwQVb3SMAAAAb27qdjbm1dnGS45LcNckOVbVtP2mPJOf0989JcuMk6advn+TCRWq9srW2qbW2aZdddlnz3gEAAJhvsz4b8y5VtUN//9pJ7pvk1HSh9yH9bAcleU9//+j+cfrpx7bW2uw6BgAAYCPadvlZpuqGSY6sqmukC9pva629r6q+nOQ/qurZST6f5DX9/K9J8oaqOj3Jd5M8fMb9AgAAsAHNNOy21k5OcodFxn8j3fG74+N/mOShM2gNAACAAVm3Y3YBAABgrWx12K0qlwICAABgrqw47FbVX1TV34483ruqzk5yfn/Zn93WpEMAAACY0CRbdh+b5PKRxy9KcnGSv053SaBnTbEvAAAAWLVJTlC1Z5KvJElVbZ/kXkkObK19oKouTPK8NegPAAAAJjbJlt1tkvy0v3/3JC3JR/vHZyX5lem1BQAAAKs3Sdg9LckD+/sPT/K/rbXL+sc3SncdXAAAAFh3k+zG/M9J3lBVByXZMVe9/u29k5w8zcYAAABgtVYcdltrb66qM5PcJclnWmsfH5n87STvmXZzAAAAsBorDrtVdc8kn2ut/c8ik/8pyR2n1hUAAABshUmO2T0uyW2XmPar/XQAAABYd5OE3drCtO2SXLmVvQAAAMBUbHE35qraK8nNRkZtqqrrjs127SR/luRbU+0MAAAAVmm5Y3YPSvLMdNfUbUn+NVfdwtv6x1ckefRaNAgAAACTWi7svj7JR9MF2mPTBdovj83zoyRfa625zi4AAABzYYtht7V2ZpIzk6Sq7p3ubMyXzqIxAAAAWK1JrrP7sbVsBAAAAKZlxWdjrqprVdUzq+orVXVZVV05Nlyxlo0CAADASq14y26Sf0p3zO5/JXlXumN1AQAAYO5MEnYfkuSZrbXnrFUzAAAAMA0r3o05yXWTfGqtGgEAAIBpmSTsvjfJPdeqEQAAAJiWSXZj/tckR1XVT5N8IMkvXFe3tfaNaTUGAAAAqzVJ2F3YhXlzkmcuMc81tqobAAAAmIJJwu6fJWlr1QgAAABMy4rDbmvt9WvYBwAAAEzNJCeoAgAAgA1hxVt2q+q1y8zSWmuHbGU/AAAAsNUmOWZ3v/ziMbs7Jblekov7AQAAANbdJMfs7rXY+Kq6Z5JXJHnElHoCAACArbLVx+y21j6e5Ih01+EFAACAdTetE1R9I8kdplQLAAAAtspWh92q2jbJwUnO3upuAAAAYAomORvzsYuMvlaSWyXZOcmjptUUAAAAbI1Jzsa8TX7xbMyXJnlXkv9orX10Wk0BAADA1pjkbMz7rmEfAAAAMDXTOkEVAAAAzI2Jwm5V7V1V76iqC6rqiv72bVW191o1CAAAAJOa5ARVv5nkY0kuT3J0kvOS7Jbkd5M8sKru2Vr77Jp0CQAAABOY5ARVz0vyxST7t9YuXRhZVddL8pF++v2m2x4AAABMbpLdmO+S5HmjQTdJ+sfPT3LXaTYGAAAAqzVJ2B2/7NCk0wEAAGAmJgm7JyR5ar/b8s9U1S8neXKS46fZGAAAAKzWJMfsPjXJR5OcWVXvS3JuuhNUPSDJLye519S7AwAAgFVYcdhtrX26qu6S5O+T/HaSnZJ8N8lxSf6xtXbK2rQIAAAAk9li2K2qbZI8MMk3W2tfbK2dnOQhY/PsnWSvJMIuAAAAc2G5Y3b/OMlbkvxgC/NcmuQtVfWHU+sKAAAAtsJKwu7rWmvfXGqG1toZSV6T5KAp9gUAAACrtlzYvWOSD62gzkeSbNr6dgAAAGDrLRd2r5fkohXUuaifFwAAANbdcmH3O0n2XEGdm/TzAgAAwLpbLux+Mis7Fvfgfl4AAABYd8uF3X9Jsn9VHVFV1xqfWFXXrKp/SbJfkiPWokEAAACY1Bavs9ta+1RVPTHJC5M8oqo+lOTMfvKeSe6bZOckT2ytHb+mnQIAAMAKbTHsJklr7V+q6nNJnpzkwUmu3U+6PMlHkxzeWvvEmnUIAAAAE1o27CZJa+3jST5eVdskuUE/+sLW2pVr1hkAAACs0orC7oLW2k+TnL9GvQAAAMBULHeCKgAAANhwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHBmGnar6sZVdVxVfbmqvlRVj+/H71RVH66q0/rbHfvxVVUvqarTq+rkqrrjLPsFAABgY5r1lt0rkjyxtXbbJHdJ8uiqum2Sw5Ic01q7ZZJj+sdJcv8kt+yHQ5O8fMb9AgAAsAHNNOy21s5trX2uv39pklOT7J7kQUmO7Gc7MsmB/f0HJTmqdY5PskNV3XCWPQMAALDxrNsxu1W1V5I7JDkhya6ttXP7Secl2bW/v3uSs0aednY/DgAAAJa0LmG3qq6b5J1J/rq19r3Raa21lqRNWO/Qqjqxqk684IILptgpAAAAG9HMw25VXTNd0H1Ta+1d/ehvL+ye3N+e348/J8mNR56+Rz/uKlprr2ytbWqtbdpll13WrnkAAAA2hFmfjbmSvCbJqa21F41MOjrJQf39g5K8Z2T8n/ZnZb5LkktGdncGAACARW0749e7W5I/SXJKVZ3Uj3tqksOTvK2qDklyZpKH9dM+kOQBSU5PclmcyNCKAAAa2UlEQVSSR862XQAAADaimYbd1tonk9QSk/dfZP6W5NFr2hQAAACDs25nYwYAAIC1IuwCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwOMIuAAAAgyPsAgAAMDjCLgAAAIMj7AIAADA4wi4AAACDI+wCAAAwODMNu1X12qo6v6q+ODJup6r6cFWd1t/u2I+vqnpJVZ1eVSdX1R1n2SsAAAAb16y37L4+yQFj4w5Lckxr7ZZJjukfJ8n9k9yyHw5N8vIZ9QgAAMAGN9Ow21r7eJLvjo1+UJIj+/tHJjlwZPxRrXN8kh2q6oaz6RQAAICNbB6O2d21tXZuf/+8JLv293dPctbIfGf34wAAAGCL5iHs/kxrrSVpkz6vqg6tqhOr6sQLLrhgDToDAABgI5mHsPvthd2T+9vz+/HnJLnxyHx79ON+QWvtla21Ta21TbvsssuaNgsAAMD8m4ewe3SSg/r7ByV5z8j4P+3PynyXJJeM7O4MAAAAS9p2li9WVW9Jsm+SG1TV2UmemeTwJG+rqkOSnJnkYf3sH0jygCSnJ7ksySNn2SsAAAAb10zDbmvtD5eYtP8i87Ykj17bjgAAABiiediNGQAAAKZK2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBwhF0AAAAGR9gFAABgcIRdAAAABkfYBQAAYHCEXQAAAAZH2AUAAGBw5j7sVtUBVfXVqjq9qg5b734AAACYf3MddqvqGkleluT+SW6b5A+r6rbr2xUAAADzbq7DbpJ9kpzeWvtGa+3HSf4jyYPWuScAAADm3LyH3d2TnDXy+Ox+HAAAACypWmvr3cOSquohSQ5orf15//hPkty5tfaYsfkOTXJo//BXk3x1mdI3SPKdKbQ4rTrTrDXUOtOspc7saqkzu1pDrTPNWurMrtZQ60yzljqzqzXUOtOspc7sag21zjRrraTOnq21XZat1Fqb2yHJXZN8cOTxU5I8ZQp1T5xSf1OpM489zVudeexpqHXmsaeh1pnHnuatzjz2NNQ689jTvNWZx56GWmcee5q3OvPY01DrzGNP81ZnXnua992YP5PkllV106q6VpKHJzl6nXsCAABgzm273g1sSWvtiqp6TJIPJrlGkte21r60zm0BAAAw5+Y67CZJa+0DST4w5bKvnLM606w11DrTrKXO7GqpM7taQ60zzVrqzK7WUOtMs5Y6s6s11DrTrKXO7GoNtc40a02tp7k+QRUAAACsxrwfswsAAAATE3YBAAAYHGF3AlV166rav6quOzb+gAnr7FNVv9nfv21VPaGqHjCF/o7a2hp9nbv3Pd1vwufduaqu39+/dlX9Q1W9t6qeX1XbT1DncVV140n7XqTOtarqT6vqPv3jP6qql1bVo6vqmquod7OqelJVvbiqXlRVj1p4vwAAwHy5Wh+zW1WPbK29boXzPi7Jo5OcmuT2SR7fWntPP+1zrbU7rrDOM5PcP93JwT6c5M5Jjkty33TXFH7OCuuMX4Kpktw7ybFJ0lr7vZXU6Wt9urW2T3//L9K9z3cnuV+S97bWDl9hnS8luV1/Fu1XJrksyTuS7N+P//0V1rkkyQ+SfD3JW5K8vbV2wUrfz0idN6VbztdJcnGS6yZ5V99PtdYOmqDW45L8TpKPJ3lAks/3NR+c5K9aax+dtD/g6q2qfqW1dv5697GgqnZurV243n0AwNRM64K9G3FI8q0J5j0lyXX7+3slOTFd4E2Sz09Y5xrpAtj3kly/H3/tJCdPUOdzSd6YZN8k9+pvz+3v32vC5fD5kfufSbJLf/+Xk5wyQZ1TR/sbm3bSJP2k2+vgfklek+SCJP+d5KAk15ugzsn97bZJvp3kGv3jmmRZj35u/f3rJPlof/8mk3z+htUNSX5lvXtYpKed17uHeRmSbJ/k8CRfSfLdJBem+2Lw8CQ7TOk1/mvC+a+f5HlJ3pDkj8am/dsEdXZL8vIkL0uyc5LN/e+DtyW54QR1dhobdk5yRpIdk+w0QZ0Dxpb7a5KcnOTNSXadoM7hSW7Q39+U5BtJTk9y5ir+hnwuydOT3HwrP+NN6b78fWOSG6f7QviS/u/SHSaoc90kz0rypf75FyQ5PsnBE/azbZL/r//7c3I//FeSRyW55jTW6/51XjnBvNfoe/rHJHcbm/b0CepcJ8nfJfnbJL+U5OAkRyd5Qfr/dbbi/XxtFc/5jZH71+zXp6OTPDfJdSas9ZiRdfsW6b6kvjjJCUn2nqDOu5L88RSWx82SvDbJs/t181VJvpjk7Un2mqDONkn+LMn7k3yh/7n7jyT7ztt6Pck6bb22Xk9jvd7SMPjdmKvq5CWGU5LsOkGpbVpr30+S1toZ6cLl/avqRenC00pd0Vq7srV2WZKvt9a+19e8PMlPJ6izKclnkzwtySWt27J4eWvtY621j01QJ0m2qaodq2rndFs8L+h7+kGSKyao88WqemR//wtVtSlJqupWSX4yQZ3WWvtpa+1DrbVDktwoyb8lOSDdP2QrtU1VXSvJ9dL9AlzYlXq7dL90JrVwqa7t0v1gp7X2rUlqVdX2VXV4VX2lqr5bVRdW1an9uB1W0dNSr/NfE8x7/ap6XlW9oar+aGzav01QZ7eqenlVvayqdq6qzVV1SlW9rapuOEGdncaGnZN8ul9Hd5qgzgEj97evqtf0P/tvrqpJfvbTfz436O9vqqpvJDmhqs6sqntNUOdzVfX0qrr5JK+/SJ1NVXVcVb2xqm5cVR+uqkuq6jNVdYcJ6ly3qp5VVV/qn39BVR1fVQdP2NLbklyU7o/TTq21ndPtaXJRP22l/dxxieFO6faomcTr0v1ufmeSh1fVO6tqu37aXSao8/okX05yVrogdnm6vTs+keQVE9T5Trrf2QvDiUl2T/eH/cQJ6jx35P4L033J+bvpAuG/T1Dnga217/T3/ynJH7TWbpFuL6MXTlAn6QL7DkmOq6pPV9XfVNWNJqyRdL/nX5Dun57/TfLvrbXtkxzWT1upN6X7W/HbSf4hyUuS/EmSe1fVc7f0xDFvSLfebU73mT+gr3e7dIF8xRb5vTb6+22Sw5j+Pd2X2hcmeUn/P8iCFe091Xt9uv+BbppueW9Ktx5Uui93VqSqLq2q7/XDpVV1aZKbL4yfsJ8Fh6f7Z/6F6TYETPJzliR/ObJuvzjJEa21HZI8ecJad05yYJJv9X/HHtz/TzGp16f7+fx+ui9dvpJuD7//ThcWVuo16b5gf16630Xv68c9vaoeO0GdqazXU1ynE+v1SlivV2taqXleh3Rb9G6fZM+xYa8k/zdBnWOT3H5s3LZJjkpy5QR1Tkj/bU66AL0wfvuMbQ1dYb090n2L8tJMsKV6rMYZ6f4x+GZ/e8N+/HUz2RbZ7dOt/F/v3+dP+nofS7cb80rrLLmlNBN8E5bkb/rXPzPJ45Ick+6bp1OSPHPCZfT4dN9+virdD/Qj+/G7JPn4BHU+mO4X024j43brx31owp7uuMRwpyTnTlDnnel+CR+Y7hvHdybZrp+24nUy3S+4x6b7x/Tk/j3duB/3ngnq/LRfF0eHnyysnxPU+dzI/Ven+/Zxz369+M8Jl/UpI/ePS/Kb/f1bJTlxgjrfTPLPSb6V5NN9LzeapJe+zqfT/VH5w3Qh7CH9+P2TfGqCOu9J9833HkmekOQZSW6Z5Mgkz52gzldXM22Rea9M97v2uEWGyydcRieNPX5akv9Jt0V1kvV6dM+Xb23pNZap88T+Z2TvkXHfXMVn/7mlXn/Cfk5Nsm1///ixaSveo2eRnu6RLpie139uh05pWU+yB9UXxh5/pr/dJslXJqiz5JacLU1bYv4r8/O/swvDwuMfT1Dn5JH726a7FuW70n0JO8kyOqm/rf6zqpHHk+xl9pJ0/wftOjLum5Msm0U++5PSb2GctJ/+OV8duf+ZpZbfSntKt5fInyT5QLq9BF6X5H6rfG9bs16fPPb4+P52u4zsWbeCOlNZr6e1To+/N+u19bq/nWi93uJrTKPIPA/pvh24+xLT3jxBnT0yElDGpt1tgjrbLTH+BplgN4RFnv/ATPDP6QprXifJTVfxvOun+4bwTplgt7qR599qiu/hRunDRLotDw9Jss8qa/1a//xbb0U/UwkF/fxTCQYRClZSayrBIMMNBR9Kt+vY6D8Gu6b7wuMjE9T5YpJbLjHtrFV8ZtuMjTs43a6tZ65mGSV59mo/+37+hS8nX5Ruj5MVf3kzUuPsdF9MPDHdP5Y1Mm2Sf3ge239u+6XbwvPidFtW/iHJGybs6Rd+T6TbLfGAJK+boM6n0h2+8tB0X1Ie2I+/Vyb7Uul/0//dT/J76c6HsTBtki9fju97Gf1iepskf5DkhAmX0WlJbrLEtBWv24v9XCZ5Zrrf2adNUOekkfuvHZv2hZXW6ee/U7q/RY/rl89q1utvpNuC9/8y9g/uKvp5Trov3m+W5KlJ/jrdF52PTPK+Ceostl7vnG5332MnqPPZdF+M7pNuD49N/fhbTPgz+9n0hwqk+2L74yPTvjxBnams19Nap/v5h7xeP3jg6/VvzsN6vcXXmEYRg8GwsiFTCgX986YSDCIUrKTWVILBEn9khhAKdkzy/HR7PVyU7rjdU/txkxyP+pAkv7rEtAMn/MxekOQ+i4w/IJP98/SsLHJsU/8H/R2Trpcjy/r4JOet4rnPHBsWzrGwW5KjJqy1b5K3pjtPwinpvuE/NBMet5fkP1azHBapc7t0e7/8V5Jb9z9nF/e/i35rwjqf7tfFTy6sU+n2xHncBHX26pfP+Um+1g/n9+Mm+iI43YkfF93DKcljJ6jzxowctz0y/s+T/GSCOq9eYr2+eZJPruKz2yZdKPhEJthrbuT5rxsbdu3H75bkmFXUOzjdHmbfSXJpukMRnptk+wlqrHivrWXq7J/kq/3vxLun23vqtH5detAEdfZLt1fQaem2nt65H79LkhdMUGdhvb6gX6cXeplovZ7WOt3PP9T1+vVTXq8fuUHW6xX/vR5Zr0/v1+u79OMnWq+3+BrTKGIwGFY25Kqh4Lu5aijYccJaUwkGEQpWWm/fLB4Mtp2gxryFgt/IVUPBrfrxE4WC/jm3TnKf8XVgsX9gVlBn/62ts0yt+69HT6N10h2z9evruYxmtKwn7ek2U6wzjfXxzum2yO2c5G5JnpTkAZMun77WPvn5IRC3Tfdl3MS11rjOAzPyxeAq6twjyd+vsp87T+N9LdLTr6X70nM9l/Wdx/pZ1XqU5K7TWkZ9jZ374Y2rrTFWb+K/rWtda6HOpOv1WI0bJrlwnt5XX2uivXBmsKzfl7GNJyt8XqU/+da0l1Fr7ep96SGYJzXBpbBmVWse6lTVtdPt4vLFeehnrWpt5Do1vUuzTaVOP/9j0529cmt7mladaS2juepnDXr6q3RfBs5DnWfmqpcK3CfJRzPhpQKXqLXayw7Oe51VLaM1XtbT6mkQy6h+8dKVSbd1baJLVy5SZ2sugTmVWmtYJ5nOMlpVnTXuaTDLaEnTTM4Gg2H1Q1Z5grG1rKXOxutpPepkupdm2+o689jTUOvMY09TrrPVlwqcZi11Nl5Pc1hnKpeuTLeX09QugTlPPc3pMpqrnuatzpaGhUupADNQVScvNSmTXQprarXU2Xg9zVudjF2arar2TfKOqtozk12abVp15rGnodaZx56mVeeK1tqVSS6rqqtcKrCqJrlU4DRrqbPxepq3OpvSXWHiaUn+trV2UlVd3ia/bOWdplRnmrWmVWcel9G89TRvdZYk7MJs7Zru2o8XjY2vdCcLWo9a6my8nuatzrer6vattZOSpLX2/ar6nXTX2tt7HerMY09DrTOPPU2rzo+r6jqttcvS/UOWpLtud7pLpE1iWrXU2Xg9zVWd1tpPkxxRVW/vb7+dVeSBadWZx57mrc489jRvdZZ7EYPBMKMhU7oU1jRrqbPxeprDOtO6NNtU6sxjT0OtM489TbHO1C4VOK1a6my8nuatziLPn8qlK6dVZx57mrc689jTvNUZHZygCgAAgMHZZr0bAAAAgGkTdgEAABgcYReAQamqg6uqVdXFVbXj2LRt+2mb16Gvzf1rr8vJIUeWy8Lwg6o6o6reXVUPq6pJz8IMAHNN2AVgqLZP8uT1bmIOPTTJXZM8IMkzkvwoyVuSfLiqrr2ejQHANAm7AAzVh5I8tqomuq7yRlZV261gtpNaa8e31j7WWntDa+3hSR6WZL8kL1im/jVtAQZgoxB2ARiqZ/e3T9/STAu7Fy8y/vVVdcbI47363X8fVVXPq6rzqurSqnpjVV2nqm5RVR+squ9X1elVddASL3mbqjquqi6rqnOr6llVdZW/x1W1S1W9oqrOqaofVdVXqurQsXkWdku+Z1W9vaouTnLCShbMuNbaO5O8J8lfVNV1xt7vX1XVC6rq/9JtBd6h7+/fq+pr/fs4q6reXFW7j/R3p/75dx8Z99h+3LNHxt2yH/fAsfd1l6p6U1V9r6r+r6peUlW/tJr3B8DVk7ALwFCdm+SlSQ6tqj2nWPcpSW6U5KAkf5/kD5K8Ism7k7w/yYOTnJzkdVX1a4s8/z+TfCTJgUnenG5X4r9fmFhV10/yyXS7GW9Od93B9yZ5eVU9dpF6b0ryzSQPSXLYVryvDyTZLsmmsfFPS3KrJIeme28/TLJTf/uU/7+9+wmxsgrjOP59KFyUC8EwWlS0iCIKdNMfwWqiyEiS7A+2MCiKiCAJSaHNhAUVEQaRRi5aFBFm2CbUMk3FjWkiEiShkRVhlM7kUGra0+Kcm5fX17w6Y9H1+4HLvef9c973nVkMv3nOOReYDjwNXA5s6gqk24AhSsW44xbg95ZtR4ANjeu+DewCZgFLgCfq9SRJ6sl/skiGJEn/kpeAx4BB4OEx6nNXZnaqtqsjYhowB5iTme8ARMQW4C5KAP2ycf7SzHyxfv64htt5EfFqZg4Bc4FLgWsy8+t63JqImAAMRsSSzDzS1d/yzJw/Bs+1p75f1Ni+F7g7M7ur3zvrfQIQEecAm2ofdwArMvPPiNgADACd6vVNlOD6ZESMz8yRun9rZh5oXPfdzBysn9dExHXAA5TfpSRJJ2VlV5LUtzJzH/AK8GBEXDFG3a5stL+q76u7rrsf+Am4uOX8ZY32e8B44Orank4ZjvxNXT363LqC82pgInBV4/wVp/wE7TpzcZtDuj9sBN1ycMTjEbE9IkYoldlOWO7+Oa8FbqjV3snABMq84EPAtHrMALCu5X4+arR3AJf0+CySJBl2JUl9bxGwD1g4Rv3tb7QP/8P2tjmme0/Q7sx3nQTcCPzReL1f909snP/jyW+5J51g3uzvuP7rcOrFlOHYs4Brgevr7u5nXkcZGj2VEmq3Z+ZeyjDtgTrMexIlFDfta7QP1b4kSeqJw5glSX0tM0ci4gVKhffllkMOAkTEuMw83LW9GSrHyoXA7kYb4If6/gulKjyXdjsb7eOqrqfpTsrPYmsP/c8GPs3MeZ0NEXFZy3E7gJ8p83KncCzUrqWsAP0d5Z8Cm0Z155IktbCyK0k6GyymhMnnW/Z9W987w4ip82OnnqF7ub/Rng2MUIIhwCrgSmBPZm5peTXnto5aRNxDmWP8Rmb+1sMp51Gqzd0eah5Uhz9/BtxGGbbcHXanUBa82tzjNSVJOiVWdiVJfS8zD0XEQuDNlt0rgWFgaUQMUobKzqcE0DPh0bpY0+fA7cAjwLOZOVz3L6Ks8LwxIhZRKrnnUwLwtMycOcrrT46IC4BxlDmwM4D7gE/ofbXjVcCCiHgG2Eyp3N57gmPXAa8DR4GNdds24AB18arTeAZJkk7KsCtJOlu8xbGvyPlbZg5FxAxKyFwGfE8JYLcCN5+B+5gJvEb5yqFhSrX5ua77GY6IqZSvI1pAmcs7RAm9H4zB9Ttzfw9Shkt/QakuL29biOoEFlIWm3qKMkd3PSW47245trP41JbM/BUgM49GxHpKNbltcSpJkkYtev+7JkmSJEnS/4NzdiVJkiRJfcewK0mSJEnqO4ZdSZIkSVLfMexKkiRJkvqOYVeSJEmS1HcMu5IkSZKkvmPYlSRJkiT1HcOuJEmSJKnvGHYlSZIkSX3nLwlOAhKt2XBOAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x114107f28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''\n",
    "Here we're simply making a plot of the number frequencies that we counted in the previous step.\n",
    "\n",
    "'''\n",
    "\n",
    "counts['sum_column'].plot(kind = 'bar', figsize = (16,8))\n",
    "plt.xlabel(\"Number Drawn\", size = 16)\n",
    "plt.ylabel(\"Counts\", size = 16)\n",
    "plt.title(\"Number Frequencies of Lotto 649\", size = 18)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From the above figure, it's clear that there isn't necessarily a _uniform_ distribution of lottery numbers. Of course, the question remains; are any numbers more _likely_ to be drawn in the lottery than others? If this was the case, it would be ideal to choose those numbers instead. \n",
    "\n",
    "Now, in the scope of the entire notebook, it appears that we did a lot of work to create the graph above. That is quite the contrary! In the cell below we've repeated all the code necessary to go from loading the data set to creating the number frequency histogram of Lotto 649. In fact, you'll find that ignoring white space and comments, only ten lines of code are needed to go from loading the data to creating a formatted graph.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Below is all the code required to create the histogram of Lotto 649 number draws \n",
    "# Libraries\n",
    "import pandas as pd \n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "# Data loading/wrangling\n",
    "lottery = pd.read_csv(\"data/649.csv\")\n",
    "\n",
    "cols = ['NUMBER DRAWN 1','NUMBER DRAWN 2','NUMBER DRAWN 3',\n",
    "        'NUMBER DRAWN 4','NUMBER DRAWN 5','NUMBER DRAWN 6']\n",
    "numbers = lottery[cols]\n",
    "\n",
    "counts = numbers.apply(pd.value_counts)\n",
    "counts[\"sum_column\"] = counts.sum(axis=1)\n",
    "\n",
    "# To create the plot again remove the '#' and trailing space from the four lines\n",
    "# below. \n",
    "\n",
    "# counts['sum_column'].plot(kind = 'bar', figsize = (16,8))\n",
    "# plt.xlabel(\"Number Drawn\", size = 16)\n",
    "# plt.ylabel(\"Counts\", size = 16)\n",
    "# plt.title(\"Number Frequencies of Lotto 649\", size = 18)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Conclusion\n",
    "\n",
    "Hopefully this notebook has demystified how to incorporate open data within a Jupyter notebook. We have demonstrated the relative simplicity of loading data into an easy to work with data frame. Then using that dataframe to create and visualize summary statistics directly. Of course, this is only the beginning of any analysis. If you wanted to understand any \"non-random anomalies\", you would need to dive deeper into this data set. Perhaps perform a test of randomness such a chi-squared or the Kolmogorov-Smirnov test. You would try to find any numbers that appear to be \"less random\" than the others and use those as favorable picks in your own lottery picks. Certainly, it would be surprising if the lottery was subject to any bias, but discovering those possibilities is what working with open data is all about.\n",
    "\n",
    "\n",
    "---\n",
    "\n",
    "## Bonus\n",
    "\n",
    "Below is a function called `lot` that will generate random lottery numbers for you. If you're feeling adventurous, try and create your own (simulated) data set of lottery numbers. You can use that synthetic data set to compare and contrast with the real data.  Or simply run the cell multiple times to generate as many combinations of potential lottery numbers as you'd like. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[3.0, 5.0, 25.0, 29.0, 39.0, 47.0]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import random\n",
    "from IPython.display import clear_output\n",
    "def lot(sort = True):\n",
    "    # Create a list (the [] brackets) of your firstrandom lottery number\n",
    "    choice = [float(random.randint(1,49))]\n",
    "    \n",
    "    # This is an infinite loop: be careful!\n",
    "    while True:\n",
    "        # Try to add a new number to our list provided it isn't already in \n",
    "        # our list\n",
    "        new = float(random.randint(1,49))\n",
    "        if new not in choice:\n",
    "            # If it's a number we don't already have, add it to the list\n",
    "            choice.append(new)\n",
    "        \n",
    "        # If we have 6 numbers, we can exit our infinite loop by returning\n",
    "        # our lottery choices\n",
    "        if len(choice) == 6:\n",
    "            if sort:\n",
    "                return sorted(choice)\n",
    "            else:\n",
    "                return choice\n",
    "\n",
    "# This actually calls our function\n",
    "lot()\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![alt text](https://github.com/callysto/callysto-sample-notebooks/blob/master/notebooks/images/Callysto_Notebook-Banners_Bottom_06.06.18.jpg?raw=true)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
